package com.ibeeking.found.upms.g.rest.service;

import com.ibeeking.found.upms.service.common.bo.ResourceBO;
import com.ibeeking.found.upms.service.common.param.ResourceParam;
import com.ibeeking.found.upms.service.common.query.ResourceQuery;
import com.ibeeking.found.upms.service.common.vo.ResourceEffectiveVO;
import com.ibeeking.found.upms.service.common.vo.ResourceTreeVO;
import com.ibeeking.found.upms.service.common.vo.ResourceVO;

import java.util.List;


/**
 * IGmcResourceService
 *
 * @Author ibeeking
 * @Date 2020-12-07 09:09
 */
public interface IGmcResourceService {

    /**
     * 新增
     *
     * @param resourceParam
     * @return
     */
    Boolean add(ResourceParam resourceParam);

    /**
     * 修改
     *
     * @param resourceParam
     * @return
     */
    Boolean modify(ResourceParam resourceParam);

    /**
     * 通过id查询
     *
     * @param id
     * @return
     */
    ResourceVO view(Long id);

    /**
     * 通过id查询
     *
     * @param id
     * @return
     */
    ResourceBO queryById(Long id);

    /**
     * 修改状态
     *
     * @param id
     * @param status
     * @param userId
     * @return
     */
    Boolean changeStatus(Long id, Integer status, Long userId);

    /**
     * 通过id删除
     *
     * @param id
     * @return
     */
    Boolean del(Long id);

    /**
     * 查询列表
     *
     * @param resourceQuery
     * @return
     */
    List<ResourceTreeVO> queryList(ResourceQuery resourceQuery);

    /**
     * 校验名称
     *
     * @param name
     * @param parentId
     * @return
     */
    Long checkName(String name, Long parentId);

    /**
     * 校验资源
     *
     * @param resource
     * @param serviceId
     * @return
     */
    Long checkResource(String resource, Integer serviceId);

    /**
     * 有效资源列表查询
     * @return
     */
    List<ResourceEffectiveVO> queryEffectiveList();

}